﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DAL;
using BLL;
using BLL2;
using GUI2.ThongBao;


namespace GUI
{
    public partial class UcThemSanPham : UserControl
    {
        public UcThemSanPham()
        {
            InitializeComponent();
        }

        TruyXuatDB DB = new TruyXuatDB();
        bool CKSPGianhap = true, CKSPGiaban = false, CKSPSoLuong = true, CKSPNhapThem = true;
        private void CheckLuu(bool IsOk = true)
        {
            CKSPGiaban = IsOk;
            CKSPGianhap = IsOk;
            CKSPNhapThem = IsOk;
            CKSPSoLuong = IsOk;
        }

        private void XoaTrong()
        {
            txtSPTen.Clear();
            txtSPGiaNhap.Clear();
            txtSPGiaBan.Clear();
            txtSPSoLuong.Clear();
        }

        private string TaoMaSanpham()
        {
            string MaSPHead = "SP";
            string MaSPFoot= (DB.LayDuLieu("select SPMA from Sanpham").Rows.Count +1).ToString();
            int MaSPFootInt = Convert.ToInt32(MaSPFoot);
            string MaSPNew = MaSPHead + MaSPFoot;
            while (MaSPNew.Length<6)
            {
                MaSPHead +="0";
                MaSPNew = MaSPHead + MaSPFoot;
            }

            int Thamso = 1;
            string[] Bien = new string[Thamso];
            object[] Giatri = new object[Thamso];
            Bien[0] = "@SPMa";
            Giatri[0] = MaSPNew;
            while (DB.LayDuLieu("select SPMA from sanpham where spma = @spma", Bien, Giatri, Thamso).Rows.Count > 0)
            {
                MaSPFootInt += 1;
                MaSPNew = MaSPHead + MaSPFootInt.ToString();
                while (MaSPNew.Length < 6)
                {
                    MaSPHead += "0";
                    MaSPNew = MaSPHead + MaSPFootInt.ToString();
                }
                Giatri[0] = MaSPNew;
            }
            return MaSPNew;
        }

        private void LoadDSSP()
        {
            DataTable DTSP = new DataTable();
            DTSP = DB.LayDuLieu("select sp.spma, lh.lhten, sp.spten,sp.spsoluong,sp.spgianhap,sp.spgiaban, sp.sphinhanh, sp.spdonvitinh from sanpham as sp, loaihang as lh where sp.lhma=lh.lhma");
            gridDSSP.DataSource = DTSP;
        }

        private void LoadLoaiHang()
        {
            DataTable DT = new DataTable();
            DT = DB.LayDuLieu("select * from loaihang");
            cbxLHMa.DataSource = DT;
            cbxLHMa.DisplayMember = "LHTEN"; ;
            cbxLHMa.ValueMember = "LHMA";
        }

        private void LoadNSX()
        {
            DataTable DT = new DataTable();
            DT = DB.LayDuLieu("select nsxma,nsxten from nhasanxuat");
            cbxSPNSX.DataSource = DT;
            cbxSPNSX.DisplayMember = "nsxten"; ;
            cbxSPNSX.ValueMember = "nsxma";
        }

        private void UcThemSanPham_Load(object sender, EventArgs e)
        {
            LoadNSX();
            LoadLoaiHang();
            LoadDSSP();
        }

        private void txtSPTen_Validated(object sender, EventArgs e)
        {
            try
            {
                txtSPTen.Text = SuLyDuLieu.VietHoaKyTuDau(txtSPTen.Text);
            }
            catch (Exception)
            {
            }
        }

        private void txtSPTen_Click(object sender, EventArgs e)
        {
            lblSPTen.Text = "";
        }

        private void txtSPGiaNhap_TextChanged(object sender, EventArgs e)
        {

        }

        private void txtSPGiaNhap_Validated(object sender, EventArgs e)
        {
            if (KiemTraKieuDuLieu.CoPhaiLaSo_(txtSPGiaNhap.Text.Trim()))
            {
                txtSPGiaNhap.Text = txtSPGiaNhap.Text.Trim();
                CKSPGianhap = true;
            }
            else
            {
                lblSPGiaNhap.Text = "Chỉ nhập số";
                CKSPGianhap = false;
            }
        }

        private void txtSPGiaNhap_Click(object sender, EventArgs e)
        {
            lblSPGiaNhap.Text = "";
        }

        private void txtSPGiaBan_Validated(object sender, EventArgs e)
        {
            if (KiemTraKieuDuLieu.CoPhaiLaSo_(txtSPGiaBan.Text.Trim()))
            {
                txtSPGiaBan.Text = txtSPGiaBan.Text.Trim();
                CKSPGiaban = true;
            }
            else
            {
                lblSPGiaBan.Text = "Chỉ nhập số";
                CKSPGiaban = false;
                return;
            }

            if (Convert.ToInt32(txtSPGiaBan.Text) < Convert.ToInt32(txtSPGiaNhap.Text))
            {
                lblSPGiaBan.Text = "Giá bán nên lớn hơn giá nhập";
                CKSPGiaban = false;
                return;   
            }
            else
            {
                CKSPGiaban = true;
            }
        }

        private void txtSPGiaBan_Click(object sender, EventArgs e)
        {
            lblSPGiaBan.Text = "";
        }

        private void txtSPSoLuong_Validated(object sender, EventArgs e)
        {
            if (KiemTraKieuDuLieu.CoPhaiLaSo_(txtSPSoLuong.Text.Trim()))
            {
                txtSPSoLuong.Text = txtSPSoLuong.Text.Trim();
                CKSPSoLuong = true;
            }
            else
            {
                lblSPSoLuong.Text = "Chỉ nhập số";
                CKSPSoLuong = false;
            }
        }

        private void txtSPSoLuong_Click(object sender, EventArgs e)
        {
            lblSPSoLuong.Text = "";
        }

        private void textBoxX2_Validated(object sender, EventArgs e)
        {
            if (txtSPSoLuongThem.Text!="")
            {
                if (KiemTraKieuDuLieu.CoPhaiLaSo_(txtSPSoLuong.Text.Trim()))
                {
                    txtSPSoLuongThem.Text = txtSPSoLuongThem.Text.Trim();
                    CKSPNhapThem = true;
                }
                else
                {
                    lblSPSoLuongThem.Text = "Chỉ nhập số";
                    CKSPNhapThem = false;
                }
            }
        }

        private void txtSPSoLuongThem_Click(object sender, EventArgs e)
        {
            lblSPSoLuongThem.Text = "";
        }

        bool Them = false;
        private void tbnThem_Click(object sender, EventArgs e)
        {
            txtSPMa.Text = TaoMaSanpham();
            txtSPSoLuong.Enabled = true;
            txtSPSoLuongThem.Enabled = false;
            txtSPSoLuongThem.Text = "";
            Them = true;
            Sua = false;
            CheckLuu(false);
            XoaTrong();
        }

        bool Sua = false;
        private void gridView1_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
        {
            txtSPSoLuong.Enabled = false;
            txtSPSoLuongThem.Enabled = true;
            Sua = true;
            CheckLuu(true);

            txtSPMa.Text = gridView1.GetFocusedRowCellValue("spma").ToString();
            txtSPTen.Text = gridView1.GetFocusedRowCellValue("spten").ToString();
            txtSPGiaNhap.Text = gridView1.GetFocusedRowCellValue("spgianhap").ToString();
            txtSPGiaBan.Text = gridView1.GetFocusedRowCellValue("spgiaban").ToString();
            txtSPSoLuong.Text = gridView1.GetFocusedRowCellValue("spsoluong").ToString();
            cbxSPDonViTinh.Text = gridView1.GetFocusedRowCellValue("spdonvitinh").ToString();
            cbxLHMa.Text = gridView1.GetFocusedRowCellValue("lhten").ToString();
            BLL2.SuLyAnh sla = new BLL2.SuLyAnh();
            try
            {
                ptcSPHinhAnh.Image = sla.Mang_Hinh((byte[])gridView1.GetFocusedRowCellValue("sphinhanh"));
            }
            catch (Exception)
            {
            }
            txtSPSoLuongThem.Text = "0";
        }

        private void btnLuu_Click(object sender, EventArgs e)
        {
            if (Them || Sua)
            {
                if (txtSPTen.Text == "")
                {
                    lblSPTen.Text = "Chưa nhập tên";
                    txtSPTen.Focus();
                    return;
                }

                if (txtSPGiaNhap.Text == "")
                {
                    lblSPGiaNhap.Text = "Chưa nhập giá nhập";
                    txtSPGiaNhap.Focus();
                    return;
                }

                if (txtSPGiaBan.Text == "")
                {
                    lblSPGiaBan.Text = "Chưa nhập giá bán";
                    txtSPGiaBan.Focus();
                    return;
                }

                if (Sua)
                {
                    if (txtSPSoLuongThem.Text == "")
                    {
                        txtSPSoLuongThem.Text = "0";
                    }

                    if (CKSPGiaban && CKSPGianhap && CKSPNhapThem)
                    {
                        int Thamso = 7;
                        string[] Bien = new string[Thamso];
                        object[] Giatri = new object[Thamso];
                        Bien[0] = "@SPMa";
                        Bien[1] = "@LHMa";
                        Bien[2] = "@SPTen";
                        Bien[3] = "@SPGiaNhap";
                        Bien[4] = "@SPGiaBan";
                        Bien[5] = "@SPSoLuong";
                        Bien[6] = "@SPDonViTinh";

                        Giatri[0] = txtSPMa.Text;
                        Giatri[1] = cbxLHMa.SelectedValue;
                        Giatri[2] = txtSPTen.Text;
                        Giatri[3] = Convert.ToInt32(txtSPGiaNhap.Text);
                        Giatri[4] = Convert.ToInt32(txtSPGiaBan.Text);
                        Giatri[5] = Convert.ToInt32(txtSPSoLuong.Text) + Convert.ToInt32(txtSPSoLuongThem.Text);
                        Giatri[6] = cbxSPDonViTinh.Text;
                        BLL2.SuLyAnh sla = new BLL2.SuLyAnh();
                        int UpAnh = DB.Update(txtSPMa.Text, sla.Hinh_Mang(ptcSPHinhAnh));
                        if (DB.Update("update sanpham set lhma =@LHMa, spten =@SPTen, spgianhap=@SPGiaNhap, spgiaban=@SPGiaBan,SPSoLuong=@SPSoLuong,SPDonViTinh=@SPDonViTinh where spma =@SPMa", Bien, Giatri, Thamso) > 0)
                        {
                            FrmThongBaoOk.TaoThongBaoOk("Thông báo", "Cập nhật thông tin sản phẩm thành công", 4);
                            LoadDSSP();
                            txtSPSoLuongThem.Text = "0";

                            return;
                        }
                        else
                        {
                            FrmThongBaoOk.TaoThongBaoOk("Thông báo", "Chưa cập nhật được thông tin sản phẩm", 2);
                            return;
                        }
                    }
                    else
                    {
                        FrmThongBaoOk.TaoThongBaoOk("Thông báo", "Một số thông tin không hợp lệ! Chưa thể lưu...", 1);
                        return;
                    }
                }

                if (Them)
                {
                    if (CKSPGiaban && CKSPGianhap && CKSPSoLuong)
                    {
                        int Thamso = 7;
                        string[] Bien = new string[Thamso];
                        object[] Giatri = new object[Thamso];
                        Bien[0] = "@SPMa";
                        Bien[1] = "@LHMa";
                        Bien[2] = "@SPTen";
                        Bien[3] = "@SPGiaNhap";
                        Bien[4] = "@SPGiaBan";
                        Bien[5] = "@SPSoLuong";
                        Bien[6] = "@SPDonViTinh";

                        Giatri[0] = txtSPMa.Text;
                        Giatri[1] = cbxLHMa.SelectedValue;
                        Giatri[2] = txtSPTen.Text;
                        Giatri[3] = Convert.ToInt32(txtSPGiaNhap.Text);
                        Giatri[4] = Convert.ToInt32(txtSPGiaBan.Text);
                        Giatri[5] = Convert.ToInt32(txtSPSoLuong.Text);
                        Giatri[6] = cbxSPDonViTinh.Text;
                        BLL2.SuLyAnh sla = new BLL2.SuLyAnh();

                        if (DB.Update("insert into sanpham (spma,lhma,spten,SPGiaNhap, spgiaban,SPSoLuong,SPDonViTinh) values (@SPMa,@LHMa,@SPTen,@SPGiaNhap, @SPGiaBan,@SPSoLuong,@SPDonViTinh)", Bien, Giatri, Thamso) > 0)
                        {
                            int thamso = 2;
                            string[] bien = new string[thamso];
                            object[] giatri = new object[thamso];
                            bien[0] = "@spma";
                            bien[1] = "@nsxma";
                            giatri[0] = txtSPMa.Text;
                            giatri[1] = cbxSPNSX.SelectedValue;
                            if (DB.Update("",bien,giatri,thamso)>0)
                            {
                                
                            }
                            FrmThongBaoOk.TaoThongBaoOk("Thông báo", "Thêm sản phẩm thành công", 4);
                        }
                        else
                        {
                            FrmThongBaoOk.TaoThongBaoOk("Thông báo", "Một số thông tin không hợp lệ!", 2);
                            return;
                        }
                        int UpAnh = DB.Update(txtSPMa.Text, sla.Hinh_Mang(ptcSPHinhAnh));
                        LoadDSSP();
                        return;
                    }
                    else
                    {
                        FrmThongBaoOk.TaoThongBaoOk("Thông báo", "Một số thông tin không hợp lệ! Chưa thể lưu.", 1);
                        return;
                    }
                }
            }
            else
            {
                FrmThongBaoOk.TaoThongBaoOk("Thông báo", "Chọn một sản phẩm từ danh sách để chỉnh sửa hay click thêm để thêm sản phẩm mởi", 1);
            }

        }

        private void simpleButton1_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Title = "Chọn file ảnh từ máy";
            ofd.Filter = "File ảnh là được JPG Files(*.JPG)|*.JPG|GIF Files(*.GIF)|*.GIF";
            if (ofd.ShowDialog(this)==DialogResult.OK)
            {
                ptcSPHinhAnh.ImageLocation=ofd.FileName;
            }
        }

        private void btnTim_Click(object sender, EventArgs e)
        {
            if (txtTuKhoa.Text.Trim() != "")
            {
                DataTable DTSP = new DataTable();
                DTSP = DB.LayDuLieu("select lh.lhten, sp.spten,sp.spsoluong,sp.spgianhap,sp.spgiaban from sanpham as sp, loaihang as lh where sp.lhma=lh.lhma");
                gridDSSP.DataSource = BLL.TimKiem.TimKiemTuongDoi_(DTSP, txtTuKhoa.Text.Trim());
            }
        }        
    }
}
